/*
 * pthreadを用いて簡単なジョブ（ちょっとだけスリープ）を数回行う時間をはかるプログラム
 * 参考：http://ascii.jp/elem/000/000/455/455786/index-3.html#eid456441
 */

#include <stdio.h>
#include <pthread.h>
#include <time.h>
#include <sys/time.h>

int main(void){

	int i;

	struct timespec ts3 = {3,0};
	struct timespec ts1 = {1,0};
	struct timeval basetime,etime;

	printf("loop start\n");
	gettimeofday(&basetime,NULL);//時間をはかる

	for(i=0; i<10; i++){
		pthread_t p = pthread_self();
		struct timeval tp;
		//ジョブ
		nanosleep(&ts3,NULL);//スリープ
		gettimeofday(&tp,NULL);

		{//結果出力
			int j=i;
			pthread_t q = pthread_self();
			struct timeval tq;
			gettimeofday(&tq,NULL);
			
			printf("hello count %d\n running thread %p time %ld \n printing thread %p time %ld \n"
			,j, p,(tp.tv_sec - basetime.tv_sec), q,(tq.tv_sec - basetime.tv_sec));
		}
		nanosleep(&ts1,NULL);//スリープ
	}
	printf("loop end\n");
	
	printf("all job is finish!!\n");

	return 0;
}